package com.edu.mapper;

import com.edu.bean.Book;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface BookMapper {

    //单参数是一个 简单类型时， 在mapper.xml中可以 #{随便写}
    Book selectBookById(@Param("bid") int bookId);


    List<Book> selectBookByName(String bookName);

    //查询1号书的指定的某一列的 值
    String selectSomeThing(String columnName);

    //参数是多个简单类型时
    //使用 作者名和书名来查找书
    // 可以通过 arg0 arg1/ param1 param2
    Book selectBookByWriterAndName(@Param("bw") String bookWriter,@Param("bn") String bookName);

    //参数是一个对象时
    //直接写对象的属性名 或者是 起别名之后 别名.属性名
    int insertBook(@Param("b") Book book);

    //参数是对象 和基本型的组合
    //查询 价格在某个范围之内的 某个作者的某个类型的书的信息。。
    List<Book> selectBook2(@Param("book") Book book,@Param("min") double minPrice,@Param("max") double maxPrice);


    //参数是 数组
    //查询 id 在 某些值之中的 书的信息
    List<Book> selectBook3(@Param("bookIds") int[] ids);

    //参数是集合
    // 一次性添加多本书的信息，多本书放在一个 List集合里
    int insertBooks(@Param("books") List<Book> bookList);

    //参数是一个map集合，一般用于查询条件 不能构成一个对象，已有对象装不下的情况
    //通过  作者 类型 最小价格 最大价格查找
    List<Book> selectBook4(@Param("m") Map<String,Object> map);

}
